]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
NetworkMenu: add VPN settings menu item
authorGiovanni Campagna <gcampagna@src.gnome.org>
Mon, 17 Feb 2014 14:04:40 +0000 (15:04 +0100)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Mon, 17 Feb 2014 23:17:11 +0000 (00:17 +0100)
Add a menu item that launches the VPN page of the network panel,
or the network panel generically if multiple VPNs are configured.

https://bugzilla.gnome.org/show_bug.cgi?id=709167

js/ui/status/network.js

index c8d69d9c9e0416071500cc7fcd7c4217534740cb..32e177ea2e739be44071d5d9866a426a0285b503 100644 (file)
@@ -9,6 +9,7 @@ const NetworkManager = imports.gi.NetworkManager;
 const NMClient = imports.gi.NMClient;
 const NMGtk = imports.gi.NMGtk;
 const Signals = imports.signals;
+const Shell = imports.gi.Shell;
 const St = imports.gi.St;
 
 const Animation = imports.ui.animation;
@@ -1417,15 +1418,39 @@ const NMVPNSection = new Lang.Class({
 
     _init: function(client) {
         this.parent(client);
+
+        this._vpnSettings = new PopupMenu.PopupMenuItem('');
+        this.item.menu.addMenuItem(this._vpnSettings);
+        this._vpnSettings.connect('activate', Lang.bind(this, this._onSettingsActivate));
+
         this._sync();
     },
 
     _sync: function() {
         let nItems = this._connectionItems.size;
         this.item.actor.visible = (nItems > 0);
+
+        if (nItems > 1)
+            this._vpnSettings.label.text = _("Network Settings");
+        else
+            this._vpnSettings.label.text = _("VPN Settings");
+
         this.parent();
     },
 
+    _onSettingsActivate: function() {
+        let nItems = this._connectionItems.size;
+        if (nItems > 1) {
+            let appSys = Shell.AppSystem.get_default();
+            let app = appSys.lookup_app('gnome-network-panel.desktop');
+            app.launch(0, -1);
+        } else {
+            let connection = this._connections[0];
+            Util.spawnApp(['gnome-control-center', 'network', 'show-device',
+                           connection.get_path()]);
+        }
+    },
+
     _getDescription: function() {
         return _("VPN");
     },